Java应用自定义配置

您可以在自定义配置页签上调整探针功能开关、采样策略等常用设置。

说明

如果您需要使用API方式调整,请参见SaveTraceAppConfig

前提条件

重要

ARMS应用监控面向已开通新版计费的用户提供全新的监控详情页面,新版计费详情,请参见产品计费(新版)

对于未开通新版计费的用户,如需查看新版监控详情页面,可在应用列表页面单击切换新版

已为应用安装探针,具体操作,请参见应用监控接入概述

功能入口

  1. 登录ARMS控制台,在左侧导航栏选择应用监控 > 应用列表

  2. 应用列表页面顶部选择目标地域,然后单击目标应用名称。

    说明

    语言列的图标含义如下:

    Java图标:接入应用监控的Java应用。

    image:接入应用监控的Golang应用。

    image:接入应用监控的Python应用。

    -:接入可观测链路 OpenTelemetry 版的应用。

  3. 在上方导航栏选择应用配置 > 自定义配置

  4. 设置自定义配置参数,设置完成后,单击保存

采样设置

采样设置区域,可以为调用链设置采样策略和采样接口名称。更多详细,请参见调用链采样模式选择(3.2.8及以上探针版本)

image.png

探针开关设置

探针开关设置区域,可以控制应用监控的启停并调整各插件开关。

重要

应用监控的启停修改即时生效,无需重启应用。如果暂停应用监控,则系统将无法监控您的应用,请谨慎操作。要使对各插件开关的修改生效,必须手动重启应用。

image.png

线程分析设置

线程分析设置区域,可以打开或关闭线程分析总控开关、定期保存本地方法栈信息开关,并设置高耗时调用阈值。

说明

服务调用耗时超过慢调用监听触发阈值(默认值为2000毫秒)时才会启动监听,并一直持续到该次调用结束或超过15秒。建议将此阈值设为调用耗时的第99百分位数。假设有100次调用,则按耗时从小到大排序,排在第99位的耗时就是第99百分位数。

image.png

应用日志关联配置

应用日志关联配置区域,可以设置应用关联的日志源信息,自动填充TraceId、SpanId。更多信息,请参见日志分析

image

  • 自动填充TraceId、SpanId配置作用:开启后,无需手动修改日志配置文件即可往日志中自动注入Trace ID、Span ID。

    配置效果

    如下图所示,在未修改日志配置文件情况下,log4j、log4j2、logback均自动在日志中打印了Trace IDSpan ID。

    image

  • 支持日志MDC中添加traceId:4.x探针中默认不再支持通过org.slf4j.MDC.get(“EagleEye-TraceID”)方式获取TraceId,如果仍需通过该方式获取,可以打开当前开关。

URL收敛设置

URL收敛设置区域,可以打开或关闭收敛功能的开关,并设置收敛阈值、收敛规则。URL收敛是指将具有相似性的一系列URL作为一个单独的个体展示,例如将前半部分都为/service/demo/的一系列URL集中展示。收敛阈值是指要进行URL收敛的最低数量条件,例如当阈值为100时,则符合规则正则表达式的URL数量达到100才会对它们进行收敛。更多信息,请参见ARMS收敛机制说明

image.png

Arthas监控

Arthas监控区域,可以打开或关闭Arthas诊断功能,并设置生效IP。更多信息,请参见Arthas诊断

image.png

持续剖析设置

持续剖析设置区域,可以打开或关闭总开关、CPU热点、内存热点、代码热点功能,并设置生效IP或网段。更多信息,请参见Java应用持续剖析

image.png

信息脱敏设置

信息脱敏设置区域,通过设置脱敏规则,探针将对JVM系统参数、K8s Yaml、方法入参、Arthas环境变量和系统变量等内容在采集时进行脱敏处理。脱敏规则中各元素通过英文半角逗号分隔,每一个元素代表一个不区分大小写的正则表达式,以password为例,脱敏规则等同于正则表达式.*password.*信息脱敏

探针在采集数据时会对数据的key按照对应的表达式进行过滤,如果满足条件,该key会被认为包含敏感数据进行脱敏处理。如下图所示,当脱敏规则为licenseKey时,其对-Darms.licenseKeykey的信息进行了脱敏处理。信息脱敏2

接口调用配置

接口调用配置区域,可以设置慢调用阈值、异常白名单、HTTP状态码白名单、无效接口调用过滤等策略。

image

  • 慢调用阈值:默认为500,当接口响应时间大于该阈值的时候,该接口会被标记为慢调用。

  • 异常白名单:输入不需要查看的异常名,从而将其从异常相关图表隐去。使用正则表达式匹配异常全名,多个异常规则请使用英文半角逗号(,)分隔。

  • 异常过滤父类继承:异常过滤中可配置父类异常。所有继承该父类的异常都会被过滤。该功能仅支持4.1.6及以上版本探针。

    开启后,所有异常过滤中配置类的子类也会被过滤。

  • HTTP状态码白名单:输入不需要查看调用情况的接口,从而将其从接口调用页面隐去。精确匹配HTTP状态码,多个状态码请使用英文半角逗号(,)分隔。

  • 无效接口调用过滤:输入不需要查看调用情况的接口,从而将其从接口调用页面隐去。使用正则表达式匹配无效接口全名,多个规则请使用英文半角逗号(,)分隔。

  • 接口调用指标是否记录上游接口名接口调用指标是否记录上游应用名

    配置作用:控制接口指标中是否记录调用该接口的上游应用和上游接口,主要影响提供服务中的链路上下游是否有数据。当应用的上游应用较多时,记录该信息可能导致指标上报量剧增,增加费用。

    配置效果:如图所示,关闭了接口指标记录上游应用和接口,可以看到相应的数据降为0。

    2024-10-31_14-51-35

  • 接口调用指标是否记录原始状态码

    配置作用:在HTTP接口相关指标中记录原始的响应码。

    配置效果:

    image

数据库调用配置

数据库调用配置区域,可以设置慢SQL阈值、采集SQL最大保留长度,并设置是否展示SQL中的变量绑定值以及常量值,是否记录MySQL查询返回值大小。

  • 展示SQL中的变量绑定值:捕获PrepareStatement参数绑定的变量值,无需重启应用即可生效。

  • 展示SQL中的常量值:仅对SQL截断,不做额外处理,无需重启应用即可生效。

image

调用链透传协议设置

调用链透传协议设置区域,您可以根据自己的需求选择使用的Trace协议,ARMS支持的Trace协议请参见ARMS支持Tracing协议

image

默认情况下,当一次调用到来时,ARMS探针会按照EagleEye、OpenTelemetry、SkyWalking、Jaeger、Zipkin的顺序依次探测是否存在该协议约定的请求头,如果探测到某个协议存在,则按照该协议约定恢复Trace上下文,后续调用下游时,也按照该协议约定往请求中塞入相关Header。当上述检测都失败时,默认使用EagleEye协议。

您可以在该页面选择任一协议作为优先协议。选择并保存后,ARMS会优先探测是否存在该协议约定的请求头。例如,按照如下配置,当一次调用到来时,ARMS探针将会改为按照Jaeger、EagleEye、OpenTelemetry、SkyWalking、Zipkin的顺序依次探测是否存在协议约定上下文。

image

您也可以选择强制使用某一种协议。例如,按照如下配置,当一次调用到来时,ARMS探针只会探测是否存在Jaeger协议约定的请求头,如果不存在,不会依次检测其他协议,而是重新生成新的Trace上下文。

image

配置作用:

支持选择优先或者强制使用的Tracing透传协议,一般有以下几种使用场景:

  • 请求携带多种格式的Trace上下文,默认的解析顺序不满足要求,想要指定优先使用某种协议。比如同时携带W3CZipkinTrace上下文,默认情况下优先解析W3CTrace上下文,可以通过设置透传协议为Zipkin改为优先解析Zipkin协议

  • 请求携带Trace协议头,但是不想复用该协议头,想要按照另外一种协议生成新的Trace上下文。比如同时携带ZipkinTrace上下文,默认情况下会解析ZipkinTrace上下文,可以通过设置透传协议为w3c,并将透传模式改为强制,这样就会忽略zipkintrace上下文,并按照w3c的协议规范生成新的上下文,需要注意,如果此时不将透传模式改为强制,则在优先按照w3c解析上下文失败后,仍然会按照zipkin协议解析上下文

配置效果:

配置后,在调用链的每一个LocalRootSpan中会有一个keytrace.protocol.type,value为当前链路trace协议的attribute

image

消息队列配置

消息队列配置区域,您可以自定义消费者信息。

image

  • 自定义RabbitMQ消费者:通过设置自定义消费者的类名或者包含匿名内部消费者的类名,可以看到该消费者的调用链路。多个消费者以英文半角逗号(,)分隔。

  • 自定义Kafka消费方法:通过自定义消费方法,可以在通过Kafka原生SDK消费消息的场景下看到链路以及指标数据。

  • Kafka发送消息自动透传上下文:发送时自动往Kafka消息中添加若干个Header用于关联发送链路和消费链路。

探针采集配置

探针采集配置区域,可以设置探针每秒最大链路采集量、最大可处理QPS阈值和探针日志级别。

image

  • 是否采集调用链:控制调用链数据是否上报,默认打开,关闭后,调用链数据不再上报。

  • 探针每秒最大链路采集量:探针每秒最大可以处理的请求数量,默认为100,大于该阈值的调用链不会被收集。

  • 探针日志级别:调整探针日志的打印级别,用于问题排查。

异常高级过滤配置

异常高级过滤配置区域,可以设置异常采集规则。

2024-11-05_16-00-28

  • 采集所有异常:开启后,每一个异常实例初始化时都会被采集,理论上可以记录当前应用所有的异常对象。

    配置效果:开启后,下图所示代码片段中try catch捕获到的异常也能在ARMS控制台看到。

    image

    控制台显示示例:

    2024-11-05_16-14-29

  • 异常过滤父类继承:开启后,如果当前采集到异常是异常过滤白名单中配置的异常类的子类,则也会被过滤。

    配置效果:满足过滤条件的异常将不会展示在ARMS控制台。

  • 异常message过滤:配置后,指定类型异常的message字段满足配置条件时也会被过滤。

    • 异常名称:指定对哪个异常生效。

    • message条件:异常message的条件、可以是startsWith、endWithcontains。

    • message关键字:关键字字符串。

    配置效果:满足过滤条件的异常将不会展示在ARMS控制台。

池化监控配置

池化监控配置区域,可以设置线程池、连接池相关采集规则。

  • 线程池、连接池监控:支持Tomcat/Dubbo/HSF等框架的线程池指标监控,需升级探针至最新版本。

  • 线程池线程名模式提取策略:该功能默认将线程池中任意一个运行线程的线程名中所有数字字符替换为*,您也可以调整为仅将线程名的结尾字符替换为*。一般在应用中启动了多个Dubbo Provider,且不同Dubbo Provider的监听端口不一致的情况下,如果按照默认策略,则两个Dubbo Provider中的两个线程池因为提取出来的线程名模板相同会被聚合成一个,此时可以通过调整该策略来区分为两个线程池。

    配置效果:以常见的Tomcat线程池为例,默认情况下展示的线程池线程名为http-nio-*-exec-*,调整后线程名为http-nio-9099-exec-*

    image

  • 线程池使用场景过滤线程池线程名模式过滤:按照线程池使用场景和线程池线程名模式过滤不上报某些线程池的监控指标。

    • 线程池使用场景:指该线程使用的场景,目前支持Tomcat、Vert.x、Undertow、Dubbo、Jetty、AliyunJavaAgent、default几种,其中AliyunJavaAgent代表探针使用的线程池,default代表未归类的其他线程池。

    • 线程池线程名模式:指该线程池中线程名经过处理得到的线程名模式,例如http-nio-*-exec-*一般是将实际线程中数字部分替换为*后得到线程名。

    示例:线程池使用场景过滤设置为AliyunJavaAgent线程池线程名模式过滤设置为Catalina-utility-*代表AliyunJavaAgent这个场景下所有线程池数据不上报,其他场景下如果线程池模式名为Catalina-utility-*则也不上报。

高级设置

高级设置区域,可以设置需过滤的接口、方法堆栈最大长度等。

  • 分位数统计:是否开启分位数统计功能。

  • 方法堆栈最大保留长度:默认为128条,最大值为400条。

  • 调用链压缩:是否将重复调用(例如for循环)简化。

  • 请求入参最大展示长度:默认为512字符,支持的最大长度为2048字符。

  • 异步透传扫描包名:添加异步透传扫描包实现异步任务监控。异步透传扫描包中的Runnable、CallableSupplier接口在创建新对象时会自动捕获当前线程调用链的上下文,并在异步线程中执行时使用该调用链上下文,完成串联。

  • HTTP返回结果中包含TraceId:仅针对HTTP类型的请求,在Response Header中返回字段为eagleeye-traceid。

  • 加密上报:开启后,ARMS将通过TLS加密上报数据。

将配置复制到其他应用

如果您需要为其他应用同步相同配置,可以将对应配置复制到其他应用上。

将单个配置复制到其他应用

  1. 在对应配置区域单击保存并批量复制到其他应用

  2. 如果弹出当前设置未保存对话框,请单击确定保存本应用配置后,再单击保存并批量复制到其他应用

  3. 在弹出的对话框中选择生效的应用,然后单击确定

将所有配置复制到其他应用

  1. 在页面底部单击保存并批量复制到其他应用

  2. 如果弹出当前设置未保存对话框,请单击确定保存本应用配置后,再单击保存并批量复制到其他应用

  3. 在弹出的对话框中选择生效的应用,然后单击确定

全局默认配置

您可以将当前配置保存为全局默认配置,在之后创建新应用时将会默认使用当前配置。

  1. 在页面底部单击保存当前应用设置为全局默认配置

  2. 如果弹出当前设置未保存对话框,请单击确定保存本应用配置后,再单击保存当前应用设置为全局默认配置

  3. 在弹出的对话框中单击确认

常见问题

应用设置开关设置不生效

查看需要修改的配置项是否有版本要求,例如在某个探针版本之后开关默认打开或默认关闭。

  • 如果有,查看当前探针版本是否满足要求。如果不满足,则需要手动单击一次保存触发生效;如果满足,则查看探针日志,看是否有配置监听相关日志。

  • 如果没有,查看探针日志,确认是否有配置监听相关日志。

    • 对于3.x版本探针,搜索关键字[Diamond] receive,出现下图所示内容则表示配置正常推送。

      image

    • 对于4.x版本探针 ,搜索关键字config update,出现下图所示日志则表示配置正常推送。

      image

采样率调整后不生效

一个应用的采样率只影响以该应用为入口的调用链是否采样,如果一次请求中本身携带了Trace上下文,那么该应用会还原该Trace上下文,并按照该Trace上下文是否声明采样来决定是否采样。

配置异步透传扫描包后对于lambda表达式不支持

建议升级到4.x版本探针,该版本支持异步上下文自动透传,无需额外改造代码或修改配置。

新建应用并没有按照全局默认配置生效

当保存应用A的当前配置为全局默认配置后,仅是将应用A当前配置的快照保存为全局默配置,后续应用A的配置变更并不会同步到全局默认配置,需要重新单击保存为全局默认配置后才会生效。

/error接口配置不生效

对于3.2.0之前版本的探针,接口过滤是在一个调用接口刚进入应用时执行过滤。而/error类接口是在调用接口报错时被统一dispatch到/error页面,此时未进行过滤操作,因此导致接口过滤不生效。3.2.0及之后版本探针已修复了该问题。

关闭了URL收敛开关后依然收敛

  • 自定义配置页面的URL收敛设置区域仅针对3.x探针生效,4.x探针需要进入应用配置 > 收敛设置页面进行相关配置。

  • 小于3.x版本的探针,如果应用使用了SpringMVC,则会导致当前问题,请将探针升级至3.x或以上版本。